import js from '@eslint/js';
import pluginVue from 'eslint-plugin-vue';
import skipFormatting from '@vue/eslint-config-prettier/skip-formatting';

export default {
  name: 'app-eslint-config',
  files: ['**/*.{js,mjs,jsx,vue}'],
  ignores: ['**/dist/**', '**/dist-ssr/**', '**/coverage/**'],
  extends: [
    js.configs.recommended,
    ...pluginVue.configs['flat/essential'],
    skipFormatting,
  ],
  rules: {
    'prettier/prettier': [
      'warn',
      {
        singleQuote: true, // 单引号
        semi: false, // 无分号
        printWidth: 80, // 每行宽度至多80字符
        trailingComma: 'none', // 不加对象|数组最后逗号
        endOfLine: 'auto' // 换行符号不限制（win mac 不一致）
      }
    ],
    'vue/multi-word-component-names': [
      'warn',
      {
        ignores: ['index'] // vue组件名称多单词组成（忽略index.vue）
      }
    ],
    'vue/no-setup-props-destructure': 'off', // 关闭 props 解构的校验
    'no-undef': 'error', // 添加未定义变量错误提示
  },
  plugins: [
    // 如果 skipFormatting 是一个插件，则需要在这里声明
    // 'prettier'
  ],
  globals: {
    ElMessage: 'readonly',
    ElMessageBox: 'readonly',
    ElLoading: 'readonly'
  }
};
